% 多用户容量分析主脚本
% 本脚本演示多用户无线通信系统的容量分析
% 包括：上行链路MAC容量、下行链路BC容量、多用户分集、多用户MIMO
% 作者：Yong Zhou 著作配套代码
% 最后更新：2024年

clc; clear all; close all;

% 添加路径
addpath('../Common');
colors = color_definitions();

fprintf('=====================================\n');
fprintf('多用户容量分析仿真\n');
fprintf('基于Yong Zhou著作配套代码\n');
fprintf('=====================================\n\n');

%% 参数设置
SNR_dB = 0:5:30; % SNR范围
total_users = 16; % 最大用户数
num_users = [1, 2, 4, 8, 16]; % 用户数量数组
num_antennas = [2, 4, 8, 16]; % 天线数量数组
num_channels = 1000; % 信道实现次数

%% 6.1 上行链路MAC容量
fprintf('6.1 上行链路MAC容量分析...\n');
[mac_capacity, fig_mac] = uplink_capacity(SNR_dB, num_users);
fprintf('MAC容量分析完成！\n\n');

%% 6.2 下行链路BC容量
fprintf('6.2 下行链路BC容量分析...\n');
[bc_capacity, fig_bc] = downlink_capacity(SNR_dB, num_users);
fprintf('BC容量分析完成！\n\n');

%% 6.3 多用户分集
fprintf('6.3 多用户分集分析...\n');
[diversity_gain, fig_diversity] = multiuser_diversity(SNR_dB, num_users, num_channels);
fprintf('多用户分集分析完成！\n\n');

%% 6.4 多用户MIMO
fprintf('6.4 多用户MIMO分析...\n');
[mimo_capacity, fig_mimo] = multiuser_mimo(SNR_dB, num_users, num_antennas);
fprintf('多用户MIMO分析完成！\n\n');

%% 总结分析
fprintf('=== 总结分析 ===\n');
fprintf('1. MAC容量: 随着用户数量增加，和容量显著提升\n');
fprintf('2. BC容量: 下行链路容量受限于最差用户信道\n');
fprintf('3. 多用户分集: 用户数量增加提供显著的分集增益\n');
fprintf('4. 多用户MIMO: 天线数量与用户数目的匹配很重要\n\n');

fprintf('所有仿真完成！请查看生成的图形结果。\n');

%% 保存结果
% 创建结果文件夹（在当前章节目录下）
if ~exist('results', 'dir')
    mkdir('results');
end

% 保存图形
saveas(fig_mac, 'results/chapter6_mac_capacity.png');
saveas(fig_bc, 'results/chapter6_bc_capacity.png');
saveas(fig_diversity, 'results/chapter6_multiuser_diversity.png');
saveas(fig_mimo, 'results/chapter6_multiuser_mimo.png');

fprintf('结果已保存到 Chapter06_Multiuser/results 文件夹中。\n');